package other;

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.effect.*;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

// 设置效果(留意DropShadow加透明和反射)
public class EffectDemo extends Application {
	private HBox root = new HBox(50);
	private Rectangle r1;
	private Rectangle r2;
	
	public static void main(String[] args) {
        launch(args);
    }
	
    @Override
    public void start(Stage stage) {
        
    	// 各种效果
//        Glow glow = new Glow();		// 暗光(可设置光的等级）
//        Bloom bloom = new Bloom();	// 泛光
//        BoxBlur bb = new BoxBlur();	// 模糊
//        GaussianBlur gb = new GaussianBlur();	// 高斯模糊
//        MotionBlur mb = new MotionBlur();	// 运动模糊(可以设置角度)
          DropShadow ds = new DropShadow(20, 0, 0, Color.YELLOW);	// 外部阴影(羽化半径,x偏移,y偏移,颜色(可带上透明度)）
//        InnerShadow is = new InnerShadow();	// 内部阴影
//        Shadow shadow = new Shadow();	// 阴影
//        Reflection reflection = new Reflection(20, 0.5, 0.5, 0.5);	// 反射(反射的影像的距离,影像显示的比例,顶透明度和底透明度）
//        SepiaTone st = new SepiaTone();		// 陈旧照片效果(可设置等级,0到1)
        
        root.setAlignment(Pos.CENTER);
        root.setEffect(ds);		// 使布局内所有结点都带有效果
        
        r1 = new Rectangle(100, 100, Color.LIGHTGREEN);
        
        PerspectiveTransform pt = new PerspectiveTransform();	// 外观转换(并没有改变宽高)
        pt.setUlx(0);	// 左上
        pt.setUly(20);
        
        pt.setUrx(100);	// 右上
        pt.setUry(0);
        
        pt.setLlx(0);	// 左下
        pt.setLly(80);
        
        pt.setLrx(100);	// 右下
        pt.setLry(100);
        r2 = new Rectangle(100, 100, Color.LIGHTGREEN);
        r2.setEffect(pt);
        root.getChildren().addAll(r1, r2);
        
        Scene scene = new Scene(root, 500, 300);
        stage.setScene(scene);
        stage.show();
    }
}
 
